有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate标准,在某些情况下与所有内容匹配

有可能做像这样的事情吗

criteria.add(Expression.eq("product", " * "))  

让它匹配所有东西

如果您得到一个可以有许多值的变量和一个与所有值匹配的特殊值“all”,这将非常方便。因此,您可以调用这样的方法,如果变量的值为“all”,那么表达式将匹配所有内容

public void someFunction(String variable) {

    criteria.add(Expression.eq("product", variable))  

}

编辑:如果我有两个选择字段,其中包含源语言&;目标语言和一个表,该表列出了它所包含的基于哪种语言组合的条目,以及IF语句(DynamicQuery是标准的抽象)

private DynamicQuery addCriteria(DynamicQuery dq, String languageFrom, String languageTo){

    if (null != languageFrom && !languageFrom.isEmpty() && null != languageTo && !languageTo.isEmpty()){

        if(languageFrom.equals("All") && languageTo.equals("All")) {
            return dq;
        } else if (!languageFrom.equals("All") && !languageTo.equals("All")) {
            dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFrom));
            dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageTo));    
            return dq;
        } else if (languageFrom.equals("All") && !languageTo.equals("All")) {
            dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageTo));   
            return dq;
        } else if (!languageFrom.equals("All") && languageTo.equals("All")) {
            dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFrom)); 
            return dq;
        } 
    } 
}
这太恶心了,想想还有一块地,甚至更恶心。一个简单地必须涵盖所有可能发生的组合。。。这就是为什么我想要像REGEX这样的东西,因为我会给变量赋值reqex“*”值,然后我会像这样加两行

dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFromVariable));
dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageToVariable));   

共 (1) 个答案

  1. # 1 楼答案

    if (null != variable && !variable.isEmpty()){
        criteria.add(Expression.eq("product", variable)) ;
    }
    

    如果您仅在选择它时才需要它。您可能需要添加if语句,以便仅在需要时添加条件

    编辑1:

    如果要将方法用于多个字段,则可以定义该方法。甚至你可以在这里定义不同的标准。易于维护(如所有人使用的和中心化的),代码重用(在某一点上的更改将对所有人有效)

    addCriteria(Criteria criteria, String name, String value){
    
     //you wanna handle special cases like null == name as well accordingly
    
        if (null != value && !value.isEmpty() && null != name && !name.isEmpty()){
            criteria.add(Expression.eq(name, value)) ;
        }
    }